package inter

type Integer int

// 参数赋值
// var a Integer = 1
// var b LessAdder = &a ... (1)

// Go语言可以根据下面的函数：自动生成一个新的Less()方法：
// func (a *Integer) Less(b Integer) bool
// 这样，类型*Integer就既存在Less()方法，也存在Add()方法，满足LessAdder接口。

// func (a *Integer) Add(b Integer) 无法法自动生成func (a Integer) Add(b Integer)
// 因为(&a).Add()改变的只是函数参数a，对外部实际要操作的对象并无影响，这不符合用
// 户的预期。所以，Go语言不会自动为其生成该函数。
func (a Integer) Less(b Integer) bool {
	return a < b
}
func (a *Integer) Add(b Integer) {
	*a += b
}

type LessAdder interface {
	Less(b Integer) bool
	Add(b Integer)
}

// 这个if语句检查file1接口指向的对象实例是否实现了two.IStream接口，
//var file1 Writer = ...
//if file5, ok := file1.(two.IStream); ok {
// ...
//}

// if语句判断file1接口指向的对象实例是否是*File类型
//var file1 Writer = ...
//if file6, ok := file1.(*File); ok {
// ...
//}
